package com.boot2.core.mqtt;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
* @author zhangweilin
* @date 2018/9/20 11:15 
* @description:  mqtt消息全局配置
*/
@ConfigurationProperties(prefix = "mqtt")
@Configuration
@Data
public class MqttProperties {

    /**
     * 服务器url,包括端口
     */
//    @NotEmpty
    private String url;
    /**
     * 账号，如果没有设置，可以为空
     */
    private String username;
    /**
     * 密码，如果没有设置，可以为空
     */
    private String password;
    /**
     * 收消息客户端id,不能重复(在配置中收和发，都会加上后缀以避免名称冲突)
     */
//    @NotEmpty
    private String clientId;

    /**
     * 是否开启ssl,默认为false,当没开启时，证书配置也不起作用
     */
    private Boolean isOpenssl =false;

    /**
     * ssl 协议，默认为TLSv1.2
     */
    private String sslProtocol="TLSv1.2";

    /**
     * 根证书路径
     */
    private String sslCaPath;

    /**
     * 信任证书路径
     */
    private String sslCrtPath;

    /**
     * 密钥证书路径
     */
    private String sslKeyPath;

    /**
     * 密码证书路径
     */
    private String sslPassword;

    /**
     * 所有的主题都会加上的前缀，主要用于在不同环境下调试，默认为空串，即啥也不加
     */
    private String mqttTopicsPrefix="";

    /**
     * mqtt消息对象对应的class类全名
     */
//    @NotEmpty
    private String mqttMessageClassName;

    /**
     * 连接超时时间
     */
    private Integer connectionTimeout;

    /**
     * Sets the "keep alive" interval.
     */
    private Integer keepAliveInterval;

//    /**
//     * 遗愿消息的主题前缀
//     */
//    private String lwtTopicPrefix="will";


    private MqttInboundProperties inbound;

    private MqttOutboundProperties outbound;


}